//package com.example.zp.filter;
//
//import org.springframework.stereotype.Component;
//
//import javax.servlet.*;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletRequestWrapper;
//import javax.servlet.http.HttpServletResponse;
//import java.io.BufferedReader;
//import java.io.ByteArrayInputStream;
//import java.io.IOException;
//
///**
// * 过滤器
// */
//@Component
//public class UrlFilter implements Filter {
//  @Override
//  public void init(FilterConfig filterConfig) throws ServletException {
//
//  }
//
//  @Override
//  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
//    HttpServletRequest httpServletRequest = (HttpServletRequest)request;
//    HttpServletResponse httpServletResponse = (HttpServletResponse)response;
//
//    String url = new String(httpServletRequest.getRequestURI());
//
//    //只过滤/actuator/bus-refresh请求
//    if (!url.endsWith("/actuator/bus-refresh")) {
//      chain.doFilter(request, response);
//      return;
//    }
//
//    //获取原始的body
//    String body = readAsChars(httpServletRequest);
//
//    System.out.println("original body:   "+ body);
//
//    //使用HttpServletRequest包装原始请求达到修改post请求中body内容的目的
//    CustometRequestWrapper requestWrapper = new CustometRequestWrapper(httpServletRequest);
//
//    chain.doFilter(requestWrapper, response);
//
//  }
//
//  @Override
//  public void destroy() {
//
//  }
//
//  private class CustometRequestWrapper extends HttpServletRequestWrapper {
//    public CustometRequestWrapper(HttpServletRequest request) {
//      super(request);
//    }
//
//    @Override
//    public ServletInputStream getInputStream() throws IOException {
//      byte[] bytes = new byte[0];
//      ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
//
//      return new ServletInputStream() {
//        @Override
//        public boolean isFinished() {
//          return byteArrayInputStream.read() == -1 ? true:false;
//        }
//
//        @Override
//        public boolean isReady() {
//          return false;
//        }
//
//        @Override
//        public void setReadListener(ReadListener readListener) {
//
//        }
//
//        @Override
//        public int read() throws IOException {
//          return byteArrayInputStream.read();
//        }
//      };
//    }
//  }
//
//  public static String readAsChars(HttpServletRequest request)
//  {
//
//    BufferedReader br = null;
//    StringBuilder sb = new StringBuilder("");
//    try
//    {
//      br = request.getReader();
//      String str;
//      while ((str = br.readLine()) != null)
//      {
//        sb.append(str);
//      }
//      br.close();
//    }
//    catch (IOException e)
//    {
//      e.printStackTrace();
//    }
//    finally
//    {
//      if (null != br)
//      {
//        try
//        {
//          br.close();
//        }
//        catch (IOException e)
//        {
//          e.printStackTrace();
//        }
//      }
//    }
//    return sb.toString();
//  }
//}